package com.xing.binbackend.pattern.template32;

public abstract class ModelTrainingTemplate {
    public final void train() {
        loadData();
        preprocess();       // 钩子方法（可选预处理）
        buildModel();
        if (needEarlyStop()) {  // 钩子方法（控制流程）
            earlyStopping();
        } else {
            trainModel();
        }
        evaluate();
    }
    protected abstract void loadData();
    protected abstract void buildModel();
    protected abstract void trainModel();
    protected void preprocess() {}      // 可选步骤
    protected boolean needEarlyStop() { return false; } // 流程控制钩子
    private void evaluate() { /* 公共评估逻辑 */ }
    private void earlyStopping() {
    }
}
